/*将json数据转为树结构*/
function trans_tree(jsonData){
    //result存储json数据转为树形结构后的结果。
    //temp为临时对象，将json数据按照id值排序.
    //len是json长度，用于循环遍历结束的条件
    var result = [], temp = {}, len = jsonData.length
    for(var i = 0; i < len; i++){
        // 以id作为索引存储元素，可以无需遍历直接快速定位元素
        temp[jsonData[i]['id']] = jsonData[i]
    }
    for(var j = 0; j < len; j++){
        var currentElement = jsonData[j]
        // 临时变量里面的当前元素的父元素，即pid的值，与找对应id值
        var tempCurrentElementParent = temp[currentElement['pid']]
        // 如果存在父元素，即如果有pid属性
        if (tempCurrentElementParent) {
            // 如果父元素没有chindren键
            if (!tempCurrentElementParent['children']) {
                // 设上父元素的children键
                tempCurrentElementParent['children'] = []
            }
            // 给父元素加上当前元素作为子元素
            tempCurrentElementParent['children'].push(currentElement)
        }
        // 不存在父元素，意味着当前元素是一级元素
        else {
            result.push(currentElement);
        }
    }
    return result;
}

/*获取某个节点下的所有末端节点*/
function getEndPoint(data, out) {
    var array = data || [];
    var out = out || [];
    var temp = [];
    if(data.length > 0){
        for(var i = 0; i < array.length; i++){
            if('children' in array[i]){
                temp = temp.concat(array[i].children)
                finish = false;
            }else {
                out.push(array[i]);
            }
        }
        return getEndPoint(temp, out);
    }else {
        return out;
    }
}
